/*
 * UVa 1588
 * 换低挡装置
 */
// 给出两个长度分别为 n1,n2（n1,n2 <= 100）
// 且每列高度只为 1 或 2 的长条。
// 需要将它们放入一个高度为 3 的容器，见下图。
// 问能够容纳它们的最短容器长度。
/*
两个长条：
  &&&&&&&&&&&      ^^   ^^        ^^
  &&&  &&  &&      ^^^^^^^^^^^^^^^^^

放入容器以后：
    &&&&&&&&&&&
  ^^&&&^^&&  &&  ^^
  ^^^^^^^^^^^^^^^^^
*/
/*
样例输入：
2112112112  1001001001
2212112     1101001
12121212
21212121
2211221122
21212
样例输出：
10
8
15
*/
// 分析
// 两个长条抽象成两个字符串，
// 常规方法是字符串匹配，匹配依据：字符对应的数字之和 < 4。
//
// 仔细观察发现，
// 字符串只有 1,2，即高度只有 1 或 2。
// 而长条是否契合，取决于长条凸出部分是否契合。
// 令所有的 1,2 同时减 1，
// 即砍去长条无关部分，只保留凸出部分，
// 则字符串只有 0,1 字符，变为二进制数。
// 如此便可以用位运算代替原来的常规方法：字符串匹配，
// 速度可能更快。
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#define LOCAL
using namespace std;
int main()
{
#ifdef LOCAL
    ifstream cin("in.txt");
    ofstream cout("out.txt");
#endif
    string strip1, strip2; // 长条
    // vector<bool> v1, v2;   // 抽象的长条
    while (cin >> strip1 >> strip2)
    {
        // for (auto ch : strip1)
        //     v1.push_back(ch == '2');
        // for (auto ch : strip2)
        //     v2.push_back(ch == '2');
        int min_length; // 最短容器长度
        // 算法（字符串匹配）

        // 输出
        cout << min_length << endl;
    }
    return 0;
}